課程資訊
課程名稱
編譯程式設計
Compiler Design 
開課學期
99-2 
授課對象
資訊工程學系  
授課教師
陳俊良 
課號
CSIE3230 
課程識別碼
902 39200 
班次
01 
學分
全/半年
半年 
必/選修
必帶 
上課時間
星期四2,3,4(9:10~12:10) 
上課地點
資104 
備註
限本系所學生(含輔系、雙修生) 且 限學士班三年級以上 且 限學號單號
總人數上限:106人 
Ceiba 課程網頁
http://ceiba.ntu.edu.tw/992compiler 
課程簡介影片
 
核心能力關聯
核心能力與課程規劃關聯圖
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

編譯器是歷史最悠久的計算機程式之一,負責把利用高階語言撰寫的程式轉成低階語言的格式,以利底層平台(虛擬機器、作業系統、硬體等)的執行。編譯器是支程式,但不是會寫程式的人就會寫編譯器。理由之一,編譯器很大,要撰寫維護如此規模的程式必須擁有更精進的程式技巧與經驗。理由之二,編譯器開發至今已有很完備的理論基礎,脫離了這些理論要寫出有用的編譯器,縱使不是緣木求魚也一定事倍功半。
本課程將談論編譯器的理論與實作。至於編譯器課程的重要性,底下文字摘錄自 ACM 以及 IEEE Computer Society 主導之 2008 年版計算機科學課程規劃書: Several industrialists passed very positive comment about compiler courses. Although many companies do not engage in anything related to compilers, compiler writing tended to be seen as a microcosm for realistic software development. So good compiler writers are often seen as desirable; they tend to be good software engineers.

課程大綱:
* compiler structure
* regular expression & context-free grammar
* lexical analysis
* syntactic analysis
* compiler construction tools
* symbol table management
* semantic analysis
* intermediate code synthesis
* runtime memory management
* basic optimization
* target code generation 

課程目標
本課程的目標在於讓修課同學:
* 了解編譯過程的各階段 (phases)
* 了解編譯器理論及其相關數學
* 有能力製作一個小型編譯器
* 有機會觀摩真實的編譯器程式碼
* 藉助實作編譯器的過程,累積軟體開發的經驗
* 奠定進一步從事編譯器相關研究之基礎 
課程要求
達成課程目標前三項目。 
預期每週課後學習時數
 
Office Hours
另約時間 備註: (請見課程內容) 
指定閱讀
二擇一(請見公佈欄)
A. Aho, M. Lam, R. Sethi and J. Ullman, "Compilers: Principles, Techniques, & Tools," 2nd Ed., Addison-Wesley, 2007. (ISBN 0321547985)
C. Fischer, R. Cytron and R. LeBlanc, Jr., "Crafting A Compiler," 2nd Ed., Addison-Wesley, 2010. (ISBN 0136067050) 
參考書目
 
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
期末考或期末報告 (學生自選) 
30% 
授課教師保留更動之權力 
2. 
期中考 
30% 
授課教師保留更動之權力 
3. 
實驗四 small compiler 
10% 
授課教師保留更動之權力 
4. 
實驗三 small parser 
10% 
授課教師保留更動之權力 
5. 
實驗二 first, follow, predicate sets 
10% 
授課教師保留更動之權力 
6. 
實驗一 small scanner 
10% 
授課教師保留更動之權力 
 
課程進度
週次
日期
單元主題
無資料